/* '''
message：要加密的消息，可以是字符串或 WordArray 对象。
ciphertext：AES加密密文
key：用于加密的密钥，可以是字符串、WordArray 对象或者一个包含字节的数组。
options（可选）：加密选项，如加密模式、填充方式等。
''' */
import CryptoJS from 'crypto-js'

const encryKey = 'Foxconn;'
// const encryKey = 'FOXCONNSecretKey'

// 加密 AES
export const encryptAES = (word: string, keyStr?: string, ivStr?: string) => {
  keyStr = keyStr ? keyStr : encryKey
  ivStr = ivStr ? ivStr : encryKey
  let key = CryptoJS.enc.Utf8.parse(keyStr)
  let srcs = CryptoJS.enc.Utf8.parse(word)
  let iv = CryptoJS.enc.Utf8.parse(ivStr)
  let encrypted = CryptoJS.AES.encrypt(srcs, key, {
    iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  let ciphertext = encrypted.toString()
  return ciphertext
}

// 解密 AES
export const decryptAES = (word: string, keyStr?: string, ivStr?: string) => {
  keyStr = keyStr ? keyStr : encryKey
  ivStr = ivStr ? ivStr : encryKey
  var key = CryptoJS.enc.Utf8.parse(keyStr)
  let iv = CryptoJS.enc.Utf8.parse(ivStr)
  var decrypt = CryptoJS.AES.decrypt(word, key, {
    iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  return decrypt.toString(CryptoJS.enc.Utf8)
}
